1 module spirv_cross.native;
2 
3 package:
4 
5 import spirv_cross;
6 static import spv;
7 
8 extern (C) nothrow:
9 
10 void* sc_d_gc_alloc(in size_t sz)
11 {
12     import core.memory : GC;
13 
14     return GC.malloc(sz);
15 }
16 
17 struct ScCompiler;
18 struct ScCompilerGlsl;
19 
20 struct ScGcCallbacks
21 {
22     extern (C) nothrow void* function(in size_t sz) alloc;
23 }
24 
25 extern (D) @property auto gcCallbacks()
26 {
27     return ScGcCallbacks(&sc_d_gc_alloc);
28 }
29 
30 enum ScResult
31 {
32     success,
33     compilationError,
34     error,
35     unhandled,
36 }
37 
38 extern (D) ScCompilerGlsl* sc_compiler_as_glsl(ScCompiler* compiler)
39 {
40     return cast(ScCompilerGlsl*) compiler;
41 }
42 
43 extern (D) ScCompiler* sc_compiler_glsl_as_base(ScCompilerGlsl* compiler)
44 {
45     return cast(ScCompiler*) compiler;
46 }
47 
48 // generic compiler functions
49 
50 void sc_compiler_delete(ScCompiler* compiler);
51 
52 string sc_compiler_get_error_string(const(ScCompiler)* compiler);
53 
54 ScResult sc_compiler_compile(ScCompiler* compiler, out string result);
55 
56 ScResult sc_compiler_get_name(const(ScCompiler)* compiler, uint id, out string result);
57 
58 ScResult sc_compiler_set_decoration(ScCompiler* compiler, uint id,
59         spv.Decoration decoration, uint argument);
60 
61 ScResult sc_compiler_set_decoration_string(ScCompiler* compiler, uint id,
62         spv.Decoration dec, string str);
63 
64 ScResult sc_compiler_set_name(ScCompiler* compiler, uint id, string str);
65 
66 // get_decoration_bitset
67 
68 ScResult sc_compiler_has_decoration(const(ScCompiler)* compiler, uint id,
69         spv.Decoration decoration, out bool result);
70 
71 ScResult sc_compiler_get_decoration(const(ScCompiler)* compiler, uint id,
72         spv.Decoration decoration, out uint result);
73 
74 ScResult sc_compiler_get_decoration_string(const(ScCompiler)* compiler, uint id,
75         spv.Decoration decoration, out string result);
76 
77 ScResult sc_compiler_unset_decoration(ScCompiler* compiler, uint id, spv.Decoration decoration);
78 
79 ScResult sc_compiler_get_type(const(ScCompiler)* compiler, uint id, out const(SPIRType)* result);
80 
81 ScResult sc_compiler_get_type_from_variable(const(ScCompiler)* compiler,
82         uint id, out const(SPIRType)* result);
83 
84 ScResult sc_compiler_get_non_pointer_type_id(const(ScCompiler)* compiler,
85         uint type_id, out uint result);
86 
87 ScResult sc_compiler_get_non_pointer_type(const(ScCompiler)* compiler, uint id,
88         out const(SPIRType)* result);
89 
90 // is_sampled_image type to be implemented in D
91 
92 ScResult sc_compiler_get_storage_class(const(ScCompiler)* compiler, uint id,
93         out spv.StorageClass result);
94 
95 ScResult sc_compiler_get_fallback_name(const(ScCompiler)* compiler, uint id, out string result);
96 
97 ScResult sc_compiler_get_block_fallback_name(const(ScCompiler)* compiler, uint id, out string result);
98 
99 ScResult sc_compiler_get_member_name(const(ScCompiler)* compiler, uint id,
100         uint index, out string result);
101 
102 ScResult sc_compiler_get_member_decoration(const(ScCompiler)* compiler, uint id,
103         uint index, spv.Decoration decoration, out uint result);
104 
105 ScResult sc_compiler_get_member_decoration_string(const(ScCompiler)* compiler,
106         uint id, uint index, spv.Decoration decoration, out string result);
107 
108 ScResult sc_compiler_set_member_name(ScCompiler* compiler, uint id, uint index, const string name);
109 
110 ScResult sc_compiler_get_member_qualified_name(const(ScCompiler)* compiler,
111         uint id, uint index, out string result);
112 
113 ScResult sc_compiler_set_member_qualified_name(ScCompiler* compiler, uint id,
114         uint index, string name);
115 
116 // get_member_decoration_bitset
117 
118 ScResult sc_compiler_has_member_decoration(const(ScCompiler)* compiler, uint id,
119         uint index, spv.Decoration decoration, out bool result);
120 
121 ScResult sc_compiler_set_member_decoration(ScCompiler* compiler, uint id,
122         uint index, spv.Decoration decoration, uint arg);
123 
124 ScResult sc_compiler_set_member_decoration_string(ScCompiler* compiler, uint id,
125         uint index, spv.Decoration decoration, string arg);
126 
127 ScResult sc_compiler_unset_member_decoration(ScCompiler* compiler, uint id,
128         uint index, spv.Decoration decoration);
129 
130 // get_fallback_member_name in D
131 
132 ScResult sc_compiler_get_active_buffer_ranges(const(ScCompiler)* compiler,
133         uint id, out BufferRange[] result);
134 
135 ScResult sc_compiler_get_declared_struct_size(const(ScCompiler)* compiler,
136         const(SPIRType)* type, out size_t result);
137 
138 ScResult sc_compiler_get_declared_struct_size_runtime_array(const(ScCompiler)* compiler,
139         const(SPIRType)* type, size_t array_size, out size_t result);
140 
141 ScResult sc_compiler_get_declared_struct_member_size(const(ScCompiler)* compiler,
142         const(SPIRType)* type, uint index, out size_t result);
143 
144 ScResult sc_compiler_get_active_interface_variables(const(ScCompiler)* compiler, out uint[] result);
145 
146 ScResult sc_compiler_set_enabled_interface_variables(ScCompiler* compiler,
147         const(uint)[] active_variables);
148 
149 ScResult sc_compiler_get_shader_resources(const(ScCompiler)* compiler, out ShaderResources result);
150 
151 ScResult sc_compiler_get_shader_resources_for_vars(const(ScCompiler)* compiler,
152         const(uint)[] active_variables, out ShaderResources result);
153 
154 ScResult sc_compiler_set_remapped_variable_state(ScCompiler* compiler, uint id, bool remap_enable);
155 
156 ScResult sc_compiler_get_remapped_variable_state(const(ScCompiler)* compiler, uint id,
157         out bool result);
158 
159 ScResult sc_compiler_set_subpass_input_remapped_components(ScCompiler* compiler,
160         uint id, uint components);
161 
162 ScResult sc_compiler_get_subpass_input_remapped_components(
163         const(ScCompiler)* compiler, uint id, out uint result);
164 
165 ScResult sc_compiler_get_entry_points_and_stages(const(ScCompiler)* compiler, out EntryPoint[] result);
166 
167 ScResult sc_compiler_set_entry_point(ScCompiler* compiler, string entry,
168         spv.ExecutionModel excution_model);
169 
170 ScResult sc_compiler_rename_entry_point(ScCompiler* compiler, string old_name,
171         string new_name, spv.ExecutionModel execution_model);
172 
173 // get_entry_point?
174 
175 ScResult sc_compiler_get_cleansed_entry_point_name(const(ScCompiler)* compiler,
176         string name, spv.ExecutionModel execution_model, out string result);
177 
178 // execution_mod_bitset
179 
180 ScResult sc_compiler_unset_execution_mode(ScCompiler* compiler, spv.ExecutionMode mode);
181 
182 ScResult sc_compiler_set_execution_mode(ScCompiler* compiler,
183         spv.ExecutionMode execution_mode, uint arg0, uint arg1, uint arg2);
184 
185 ScResult sc_compiler_get_execution_mode_argument(const(ScCompiler)* compiler,
186         spv.ExecutionMode execution_mode, uint index, out uint result);
187 
188 ScResult sc_compiler_get_execution_model(const(ScCompiler)* compiler, out spv.ExecutionModel result);
189 
190 ScResult sc_compiler_get_work_group_size_specialization_constants(const(ScCompiler)* compiler,
191         out SpecializationConstant x, out SpecializationConstant y,
192         out SpecializationConstant z, out uint result);
193 
194 ScResult sc_compiler_build_dummy_sampler_for_combined_images(ScCompiler* compiler, out uint result);
195 
196 ScResult sc_compiler_build_combined_image_samples(ScCompiler* compiler);
197 
198 ScResult sc_compiler_get_combined_image_samplers(const(ScCompiler)* compiler,
199         out CombinedImageSampler[] result);
200 
201 // remap_callback
202 
203 ScResult sc_compiler_get_specialization_constants(const(ScCompiler)* compiler,
204         out SpecializationConstant[] result);
205 
206 // get_constant
207 
208 ScResult sc_compiler_get_current_id_bound(const(ScCompiler)* compiler, out uint result);
209 
210 ScResult sc_compiler_type_struct_member_offset(const(ScCompiler)* compiler,
211         const(SPIRType)* type, uint index, out uint result);
212 
213 ScResult sc_compiler_type_struct_member_array_stride(const(ScCompiler)* compiler,
214         const(SPIRType)* type, uint index, out uint result);
215 
216 ScResult sc_compiler_type_struct_member_matrix_stride(const(ScCompiler)* compiler,
217         const(SPIRType)* type, uint index, out uint result);
218 
219 ScResult sc_compiler_get_binary_offset_for_decoration(const(ScCompiler)* compiler,
220         uint id, spv.Decoration decoration, out uint word_offset, out bool result);
221 
222 ScResult sc_compiler_buffer_is_hlsl_counter_buffer(const(ScCompiler)* compiler,
223         uint id, out bool result);
224 
225 ScResult sc_compiler_buffer_get_hlsl_counter_buffer(const(ScCompiler)* compiler,
226         uint id, out uint counter_id, out bool result);
227 
228 ScResult sc_compiler_get_declared_capabilities(const(ScCompiler)* compiler,
229         out spv.Capability[] result);
230 
231 ScResult sc_compiler_get_declared_extensions(const(ScCompiler)* compiler, out string[] result);
232 
233 ScResult sc_compiler_get_remapped_declared_block_name(const(ScCompiler)* compiler,
234         uint id, out string result);
235 
236 // buffer_block_flags
237 
238 // GLSL compiler funcs
239 
240 ScResult sc_compiler_glsl_new(const(uint)[] ir, ScGcCallbacks gc_callbacks,
241         out ScCompilerGlsl* result, out string error);
242 
243 ScResult sc_compiler_glsl_get_options(const(ScCompilerGlsl)* compiler, out ScOptionsGlsl result);
244 
245 ScResult sc_compiler_glsl_set_options(ScCompilerGlsl* compiler, const(ScOptionsGlsl)* options);
246 
247 ScResult sc_compiler_glsl_get_partial_source(ScCompilerGlsl* compiler, out string result);
248 
249 ScResult sc_compiler_glsl_add_header_line(ScCompilerGlsl* compiler, string str);
250 
251 ScResult sc_compiler_glsl_require_extension(ScCompilerGlsl* compiler, string ext);
252 
253 ScResult sc_compiler_glsl_flatten_buffer_block(ScCompilerGlsl* compiler, uint id);